@tool
@icon("../icons/expression_guard.svg")
class_name TriggerGuard
extends Guard

# 如果对应的属性为true返回true，否则返回false，无论返回什么，均重置该属性为false
# 属性从FSM.expression_properties中获取
#region 属性
@export var trigger_attribute_name:String
#endregion
#region 字段
#endregion
#region 信号
#endregion

#region 基类方法
func is_satisfied(transition:Transition,state:State) -> bool:
	var root = state
	while is_instance_valid(root) and not root is FSM:
		root = root.get_parent()
	if not is_instance_valid(root):
		return false
	var attribute = root.expression_properties[trigger_attribute_name]
	if attribute == null:
		return false
	else:
		root.set_expression_property(trigger_attribute_name,false)
		if attribute:
			return true
		else:
			return false
#endregion
#region 公共方法
#endregion
#region 私有方法
#endregion
#region 生命周期函数
#endregion

